﻿
using System;
using V82;
namespace V82.ОбщиеОбъекты
{
	public partial class ГенераторСлучайныхЧисел
	{
		private static Random rnd = new Random((int)DateTime.Now.Ticks%1000000000);
		public static int Следующий(int МаксимальноеЗначение)
		{
			return rnd.Next(МаксимальноеЗначение);
		}

		public static int Следующий(int МинимальноеЗначение,int МаксимальноеЗначение)
		{
			return rnd.Next(МинимальноеЗначение,МаксимальноеЗначение);
		}

		public static bool СледующееБулево()
		{
		return Следующий(100)>50;
		}

		public static DateTime СледующаяДата()
		{
		    return DateTime.Now.AddSeconds(-rnd.Next(100000000));
		}

		public static object СледующееПеречисление(Type Перечисление)
		{
		var Массив = Enum.GetValues(Перечисление);
		return Массив.GetValue(Следующий(Массив.Length));
		}

		public static string СлучайноеРусскоеСлово(int Длина)
		{
			//const string Алфавит = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
			const string Согласные = "бббвввгддджзйклмнпппрррстттфхцчшщъь";//"бвгджзйклмнпрстфхцчшщъь";
			const string Гласные = "ааааеееёиооооуыэюя"; //"аеёиоуыэюя";
			var Вариант = Следующий(100)>30?1:0;//70/30
			var Слово = "";
			for (var НомерСимвола = 0; НомерСимвола < Длина; НомерСимвола++)
			{
				//Слово += Алфавит[Следующий(Алфавит.Length-1)];
				Слово += НомерСимвола % 2 == Вариант? Гласные[Следующий(Гласные.Length - 1)]: Согласные[Следующий(Согласные.Length - 1)];
				if (НомерСимвола == 0)
				{
					Слово = Слово.ToUpper();
				}
			}
			return Слово;
		}

		public static string СлучайноеРусскоеСлово(int МинРазмерСлова,int МаксРазмерСлова)
		{
			return СлучайноеРусскоеСлово(Следующий(МинРазмерСлова, МаксРазмерСлова));
		}

		public static string СлучайноеРусскоеПредложение(int КоличествоСлов,int МинРазмерСлова,int МаксРазмерСлова)
		{
			var Предложение = "";
			for (var НомерСимвола = 0; НомерСимвола < КоличествоСлов; НомерСимвола++)
			{
				if (НомерСимвола == 0)
				{
					Предложение = СлучайноеРусскоеСлово(Следующий(МинРазмерСлова, МаксРазмерСлова));
				}
				else
				{
					Предложение += " "+СлучайноеРусскоеСлово(Следующий(МинРазмерСлова, МаксРазмерСлова)).ToLower();
				}
			}
			return Предложение+".";
		}

		public static string СлучайноеАнглийскоеСлово(int Длина)
		{
			const string Алфавит = "abcdefghijklmnopqrstuvwxyz";
			var Слово = "";
			for (var НомерСимвола = 0; НомерСимвола < Длина; НомерСимвола++)
			{
				Слово += Алфавит[Следующий(Алфавит.Length - 1)];
				if (НомерСимвола == 0)
				{
					Слово = Слово.ToUpper();
				}
			}
			return Слово;
		}
	}
}